"""
练习：
    -- 在商品列表，获取所有名称与单价
    -- 在商品列表中，获取所有单价小于10000的商品
    -- 对商品列表，根据单价进行降序排列
    -- 获取元组中长度最大的列表  ([1,1],[2,2,2],[3,3,3])
"""

class Commodity:

    def __init__(self, cid=0, name="", price=0):
        self.cid = cid
        self.name = name
        self.price = price

    def __repr__(self):
        return f'Commodity({self.cid}, {self.name}, {self.price})'

list_commodity_infos = [
    Commodity(1001, "屠龙刀", 10000),
    Commodity(1002, "倚天剑", 10000),
    Commodity(1003, "金箍棒", 52100),
    Commodity(1004, "口罩", 20),
    Commodity(1005, "酒精", 30)
]

# 在商品列表，获取所有名称与单价
for com in map(lambda x: (x.name,x.price), list_commodity_infos):
    print(com)

print('=' * 30)
# 在商品列表中，获取所有单价小于10000的商品
for com in filter(lambda x:x.price < 10000,list_commodity_infos):
    print(com)

print('=' * 30)
# 对商品列表，根据单价进行降序排列
for com in sorted(list_commodity_infos, key=lambda x:x.price,reverse=True):
    print(com)

print('=' * 30)

# 获取元组中长度最大的列表
tuple1 = ([1,1],[2,2,2,2],[3,3,3])
list1 = max(tuple1,key = lambda t:len(t))
print(list1)
